//
import java.awt.*;
//
/**Einfaches Balkendiagramm.
 * 
 * @author Dr. Gerd Wegener
 * @version 0006 Montag 20.12.2010 23:00:30
 * @modified: 0003 Samstag 16.07.2011 13:28:20
 * @author Hung Nguyen Huu <hung852001@yahoo.com>
 * @author Viktor Ayzenshtadt <vsa85@gmx.de>
 */
public class Balken extends Canvas{
// Anzahlen der einzelnen Balkenstuecke
   private int [] wert;		// ArrayWerte Gesamt aus der SQl-Query
   private int n, summe;
// Prozente
   private float [] prozent;
   private float max;
//
   private final static double rotationAngel = 0.78;
// Farben fuer die Balkenstuecke
   private Color [] farbeM = {new Color(65,100,168), new Color(127,127,127)}; 	// Balkenansicht männlich, (127,127,127) - grau, (65,100,168) - blau
   private Color [] farbeW = {new Color(193,41,26), new Color(127,127,127)}; 	// Balkenansicht weiblich, (193,41,26) - rot
   private Color [] farbe = {new Color(65,100,168), new Color(193,41,26)}; 	// Balkenansicht für männlich und weiblich
   private String geschlecht = "";
   private int[] jahr;
//
   public Balken(int [] wert, int[] jahr, String geschlechtCBVal){
      this.wert = (int [])wert.clone();
      n = wert.length;
      summe = 0;
//    Prozente und maximale Prozente bestimmen
      for (int i=0; i<n; i++) summe += wert[i];
      prozent = new float [n];
      max = 0;
      for (int i=0; i<n; i++){
         prozent[i] = (float)wert[i] / summe;
         if (prozent[i] > max) max = prozent[i];
      }
	  this.jahr = getJahr(jahr);
      geschlecht = getGeschlecht(geschlechtCBVal);   }
//
	public int[] getJahr(int[] jahr){			// Methode holt Jahre
		return jahr;
	}
    public String getGeschlecht(String geschlecht){ // Methode holt Geschlecht
		return geschlecht;	
    }
//
/**Graphic zeichnen.
 * @param g Graphikkontext (wird vom System zur Verf&uuml;gung gestellt)
 */
   public void paint (Graphics g){
	//Balken haben feste Breite und der linke Rand ist genauso breit wie ein Balken
      int brei, hoehe = this.getHeight(), x = 0, balhoe;
      brei = 50;
	  float fact = (hoehe - 2*brei) / max;
	  String labelLegende1, labelLegende2, labelLegende3, labelLegende4, labelGesamt, labelJahr;
	  labelLegende1 = "BLAU = maennlich";
	  labelLegende2 = "ROT   = weiblich";
	  labelLegende3 = "GRAU   = gleiches Geschlecht";
	  labelLegende4 = "LABEL   = Einwohnergesamtzahl (Jahr)";
	  g.drawString(labelLegende1, 50, 15);
	  g.drawString(labelLegende2, 50, 35);
	  g.drawString(labelLegende3, 200, 15);
	  g.drawString(labelLegende4, 200, 35);
      for (int i=0; i<n; i++){
         if(geschlecht == "m") g.setColor(farbeM[i%farbeM.length]);
		 else if(geschlecht == "w") g.setColor(farbeW[i%farbeW.length]);
		 else g.setColor(farbe[i%farbe.length]);
         x += brei;   balhoe = Math.round(prozent[i]*fact);
         g.fillRect(x,hoehe-brei-balhoe,brei,balhoe);
		 labelGesamt = ""+ wert[i];
		 labelJahr = "" + "(" + jahr[i] +")";
         g.drawString(labelGesamt, i*50+50, 535);
		 g.drawString(labelJahr, i*50+50, 550);
      }
	}
	
}
